/*
 * Tạo bảng hiển thị thông tin
 */
package view;

import javax.microedition.lcdui.*;

import fhedu.*;
import obj.*;
import java.util.Vector;
import javax.microedition.lcdui.game.GameCanvas;
import javax.wireless.messaging.MultipartMessage;

/**
 * @author lenovo
 */
public class frmTable extends GameCanvas implements CommandListener {

    public String sTitle; //Tiêu đề bảng
    public String sHead[]; //Tiêu đề cột
    public Vector oData; //Danh sách dữ liệu của bảng
    public int iCol; //Số cột
    public int iRowDataHeight; //Độ rộng của cột
    public int iRowFocus; //Hàng 
    public int iColWidth[]; //Quy định độ rộng của cột, tính bằng phần trăm
    /**
     * constructor
     */
    public frmTable() {
        super(false);
        try 
        {
            // Set up this canvas to listen to command events
            setCommandListener(this);
            // Add the Exit command
            addCommand(new Command("Exit", Command.EXIT, 1));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void Display()
    {
        DrawTable();
        RowFocus(0);
    }
    
    //Hàm vẽ bảng
    void DrawTable()
    {
        Graphics g = getGraphics();
        //------------------------
//---Xác định kiểu dữ liệu truyền vào
        int iType = 0;
        if(oData.elementAt(0).equals(new Lichhoc()))
        {
            iType = 1;//Lịch học
        }

        //-----------------------------------
        g.setColor(Mau.mauxanh);
        g.setFont(MyFont.fontTieuDe);
        //Hiển thị tiêu đề bảng
        g.drawString(sTitle, getWidth()/2, 15, Graphics.BASELINE | Graphics.HCENTER);
        //Vẽ tiêu đề cột
        g.setColor(Mau.mauden);
        g.setFont(MyFont.fontNhoTieuDe);
        int iX;
        int iY = 20;
        int iWidth;
        iX = 0;
        for(int j=0;j<iCol;++j)
        {
            iWidth = (getWidth() * iColWidth[j]) / 100;
            Cell cellHead = new Cell(sHead[j], iWidth, 20, Mau.mautrang, Mau.mauden, Mau.mauxanh);
            cellHead.canle=1;
            cellHead.VeCell(g, iX, iY);
            iX += iWidth;
        }
//        iY = 60;
//        
//        
        Lichhoc objLichhoc;// = new Lichhoc("10/12/2011","9h10","11h10","v","08B6","","P22","Java");
//        //-----------------Each item
//        Cell cellHead = new Cell(lichHocTmp.getsNgayhoc() + "\n" + lichHocTmp.getsGiobatdau() +"-"+ lichHocTmp.getsGioketthuc(), iX, 40, Mau.maudo, Mau.mauden, Mau.mautrang);
//        cellHead.canle=0;
//        cellHead.VeCell(g, 0, 40);
        //Vẽ nội dung bảng
        g.setColor(Mau.mauden);
        g.setFont(MyFont.fontnho);
        iX = 0;
        iY = 40;
        int j = 0;
        Cell cellData = new Cell();
        switch(1) //Xử lý vẽ bảng theo dữ liệu truyền vào
        {
            case 1:
                for(int i=0;i<oData.size();++i)
                {
                    j = 0;
                    iX = 0;
                    objLichhoc = (Lichhoc) oData.elementAt(i);

                    //-----------------Each item
                    iWidth = (getWidth() * iColWidth[j]) / 100;
                    cellData.setAtt(objLichhoc.getsNgayhoc() + "\n" + objLichhoc.getsGiobatdau() + "-" + objLichhoc.getsGioketthuc(), iWidth, iRowDataHeight, Mau.mauden, Mau.mauden, Mau.mautrang);
                    cellData.canle = 0;
                    cellData.VeCell(g, iX, iY);
                    iX += iWidth;
                    //----------------
                    ++j;
                    //-----------------Each item
                    iWidth = (getWidth() * iColWidth[j]) / 100;
                    cellData.setAtt(objLichhoc.getsTenmonhoc(), iWidth, iRowDataHeight, Mau.mauden, Mau.mauden, Mau.mautrang);
                    cellData.canle = 0;
                    cellData.VeCell(g, iX, iY);
                    iX += iWidth;
                    //----------------
                    ++j;
                    //-----------------Each item
                    iWidth = (getWidth() * iColWidth[j]) / 100;
                    cellData.setAtt(objLichhoc.getsTenlop(), iWidth, iRowDataHeight, Mau.mauden, Mau.mauden, Mau.mautrang);
                    cellData.canle = 1;
                    cellData.VeCell(g, iX, iY);
                    iX += iWidth;
                    //----------------
                    ++j;
                    //-----------------Each item
                    iWidth = (getWidth() * iColWidth[j]) / 100;
                    cellData.setAtt(objLichhoc.getsTenphong(), iWidth, iRowDataHeight, Mau.mauden, Mau.mauden, Mau.mautrang);
                    cellData.canle = 1;
                    cellData.VeCell(g, iX, iY);
                    iX += iWidth;
                    //----------------
                    ++j;
                    //-----------------Each item
                    iWidth = (getWidth() * iColWidth[j]) / 100;
                    cellData.setAtt(objLichhoc.getsTrangthai(), iWidth, iRowDataHeight, Mau.mauden, Mau.mauden, Mau.mautrang);
                    cellData.canle = 1;
                    cellData.VeCell(g, iX, iY);
                    //----------------
                    iY += iRowDataHeight;
                }
                break;
        }
    
    }
    
    //Hàm vẽ hàng được chọn
    void RowFocus(int iRowIndex)
    {
        
    }

    /**
     * Called when a key is pressed.
     */
    protected void keyPressed(int keyCode) {
    }

    /**
     * Called when a key is released.
     */
    protected void keyReleased(int keyCode) {
    }

    /**
     * Called when a key is repeated (held down).
     */
    protected void keyRepeated(int keyCode) {
    }

    /**
     * Called when the pointer is dragged.
     */
    protected void pointerDragged(int x, int y) {
    }

    /**
     * Called when the pointer is pressed.
     */
    protected void pointerPressed(int x, int y) {
    }

    /**
     * Called when the pointer is released.
     */
    protected void pointerReleased(int x, int y) {
    }

    /**
     * Called when action should be handled
     */
    public void commandAction(Command command, Displayable displayable) {
    }
}
